import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

# 读取灰度图（你也可以换成自己的图片路径）
img = Image.open('D:\\2D-DFT\image\\testhaze1.png').convert('L')  # 转灰度
img_np = np.array(img)

# 计算二维DFT
f = np.fft.fft2(img_np)

# 将零频移到中心
fshift = np.fft.fftshift(f)

# 计算幅度谱（log尺度方便显示）
magnitude_spectrum = 20 * np.log(np.abs(fshift) + 1e-8)

# 显示原图和频谱
plt.figure(figsize=(12, 6))

plt.subplot(1, 2, 1)
plt.title('Original Grayscale Image')
plt.imshow(img_np, cmap='gray')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.title('Magnitude Spectrum (Log Scale)')
plt.imshow(magnitude_spectrum, cmap='gray')
plt.axis('off')

plt.show()
